<?php
// 配置参数
require_once '../conn.php';
$uploadDir = 'files/';  // 上传目录
if ($_SERVER['REQUEST_METHOD'] !== 'POST') {// 检查请求是否为POST方法
  header('Content-Type: application/json');echo json_encode(['errno' => 404,'message' => '未接收到文件哦(post)！']);
}else {
  if (!isset($_FILES['file'])) {// 检查是否有上传文件
    header('Content-Type: application/json');echo json_encode(['errno' => 404,'message' => '未接收到文件哦(save)！',]);
  }else{
    $file = $_FILES['file']; // 获取上传文件
    $fileName = $file['name']; // 获取文件名
    $fileTmpPath = $file['tmp_name']; // 获取临时文件路径
    $fileSize = $file['size']; // 获取文件大小（字节数）
    $fileType = pathinfo($fileName, PATHINFO_EXTENSION); // 获取文件扩展名
  
    $allowedTypes = ['jpg', 'jpeg', 'png', 'gif'];
    if (!in_array($fileType, $allowedTypes)) {// 返回错误消息，请上传有效的图片文件
      header('Content-Type: application/json');echo json_encode(['errno' => 400, 'message' => '请上传有效的图片文件(支持jpg, jpeg, png, gif格式)']);
      exit;
    }else{
      // 可以在此处加入附件管理，即插入文件信息到数据库，此时，需要将用户信息传递处理

      // 生成新的文件名，使用上传时间戳加上文件类型作为后缀
      $newFileName = time().'.'.$fileType;

      // 将文件移动到目标目录，并重命名，目标路径（相对当前脚本）
      $targetPath = __DIR__ . '/' . $uploadDir . $newFileName;

      // 将文件移动到目标路径
      move_uploaded_file($file['tmp_name'], $targetPath);  

      // 获取文件的URL地址，用于返回数据中
      $fileUrl = $baseURL.'/src'.'/upload'.'/'. $uploadDir . $newFileName;

      header('Content-Type: application/json');
      echo json_encode([
        'errno' => 200,
        'data' => [
          'url' => $fileUrl, 
          'alt' => $newFileName,
          'href' => $fileUrl,
          'date' => date('Y-m-d H:i:s')
        ],
        'message' => '上传成功！'
      ]);
    }
  }
}